package cn.doitedu.producer.low;

import java.io.*;
import java.lang.reflect.Constructor;
import java.net.Socket;
import java.util.Iterator;
import java.util.Properties;

public class ProducerStarter_v2 {
    public static void main(String[] args) throws Exception {

//        Socket socket = new Socket("local", 9090);
//        OutputStream outputStream = socket.getOutputStream();
//        BufferedWriter br = new BufferedWriter(new OutputStreamWriter(outputStream));

        //Iterator<String> dataSourceIter = new ConsoleDataSourceIter();


        // 构造一个properties配置文件的解析器
        Properties props = new Properties();
        // 让解析器加载/解析指定的配置文件
        props.load(new FileReader("./conf/producer.properties"));

        // 从配置参数中获取  数据源实现类的类名
        String datasourceClassname = props.getProperty("datasource_classname");
        String datasourceConstructorParam = props.getProperty("datasource_constructor_param");

        // 根据配置文件中指定的数据源类名，进行反射
        Class<?> aClass = Class.forName(datasourceClassname);
        // 获取类的  "接收String类型参数的构造器"
        Constructor<?> constructor = aClass.getConstructor(String.class);

        // 用获取的构造器，构造该数据源的实例
        Iterator<String> dataSourceIter = (Iterator<String>) constructor.newInstance(datasourceConstructorParam);


        // 利用数据源迭代器实例，来获取数据
        while (dataSourceIter.hasNext()) {
            // 从数据源迭代器获取数据
            String line = dataSourceIter.next();

            // 将数据放入缓存



        }


    }
}
